<?php
namespace app\data_magic\struct;
use app\data_magic\data\Table;
use app\data_magic\data\Field;
use app\data_magic\data\Scene;
use app\data_magic\data\Filter;
use app\data_magic\data\Action;
use app\data_magic\widget\Widget;

/**
 * 返回结果
 */
class Result
{
    /**
     * @var bool $status 处理结果
     * @var bool $is_page 是否显示页面
     * @var string $message 返回信息
     * @var array $redirect_params 重定向参数
     * @var string $userId 当前用户ID
     * @var array $roles 当前用户角色
     */
    public $status=true;
    public $is_page=true;
    public $message="";
    public $redirect_params=[];
    public $userId="";
    public $roles=[];

    /**
     * @var Table $table 结构
     * @var Field[] $fields 字段列表
     * @var Scene $scene 场景
     * @var Filter[] $filters 关联的过滤器的列表
     * @var Action $action 操作
     * @var Widget[] $widgets 部件数据列表
     */
    public $table=null;
    public $fields=[];
    public $scene=null;
    public $filters=[];
    public $action=null;
    public $widgets=[];

    /**
     * @var string $primaryKey 主键字段
     * @var string $userIdField 主键字段
     * @var string $createTimeField 主键字段
     * @var string $updateTimeField 更新时间字段
     */
    public $primaryKey="";
    public $userIdField="";
    public $createTimeField="";
    public $updateTimeField="";

    /**
     * @var array[] $bindAction 绑定的操作
     * @var array[] $linkActions 关联的操作
     */
    public $bindAction=[];
    public $linkActions=[];
    
    /**
     * 获取where字符串
     * @var string[] $where 搜索条件列表
     */
    public $where=[];
    public function getWhere()
    {
        $where="";
        if($this->where){
            $where="(".implode(") AND (",$this->where).")";
        }
        return $where;
    }

    /**
     * @property string $title 标题
     * @property string $link_actions 关联操作
     */
    public function __get($name)
    {
        if($name="title"){
            $title="";
            if(isset($structure["title"]) && $structure["title"]!==""){
                $title.=$structure["title"];
            }
            if(isset($scene["title"]) && $scene["title"]!==""){
                $title.=$scene["title"];
            }
            if(isset($action["title"]) && $action["title"]!==""){
                $title.=$action["title"];
            }
            return $title;
        }
        elseif($name="link_actions"){
            if(isset($action["link_actions"])){
                return $action["link_actions"];
            }
            else{
                return [];
            }
        }
    }
}
